import axios from 'axios'
import router from '@/router';
import { Message, Loading } from 'element-ui'

let loading
// 创建一个单例 
const http = axios.create({
    // baseURL: "http://shiyansong.cn:8080/",  // 配置请求基地址
    timeout: 5000,                          // 请求 50s 超时
});

// 拦截器  -请求拦截
http.interceptors.request.use((config) => {
    //部分接口需要token
    let token = window.localStorage.getItem("token");
    if (token) {
        config.headers["authorization"] = token;
        return config;
    }
    // 全局  loading
    loading = Loading.service({
        lock: true,
        text: 'Loading',
        spinner: 'el-icon-loading',
        background: 'rgba(0, 0, 0, 0.7)'
    });
    return config
}, err => {
    Message.error({ message: '连接不到服务器，请稍后再试', offset: 15 });
    return Promise.reject(err)
});

//拦截器  -响应拦截
http.interceptors.response.use(config => {
    // 对响应数据做点什么
    if (config.status === 200) { //成功状态码200
        // store.state.token = response.data.data.body.token //更新token
        loading.close()
        return config.data;    //返回响应的数据
    }
    loading.close()
    return config.data
}, err => {
    if (err.response.status) {
        switch (err.response.status) {
            //未登录,跳转到登录页并携带当前页路径，登录成功后跳转
            case 404:
                // router.replace({ name: 'about' })
                Message.error({ message: err.response.data, offset: 15 });
                loading.close()
                break
            //其他错误，提示错误
            default:
                loading.close()
                Message.error({ message: '服务器异常，请稍后再试', offset: 15 });
        }
    }
    return Promise.reject(err)
});
export default http;